package com.gm.corejava.book1;

import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * Created with IntelliJ IDEA.
 * User: camark@sina.cn
 * Date: 14-1-6
 * Time: 下午1:26
 */
public class CalendarPrinter {
    public void Print(){
        GregorianCalendar d=new GregorianCalendar();

        int today=d.get(Calendar.DAY_OF_MONTH);
        int month=d.get(Calendar.MONTH);

        d.set(Calendar.DAY_OF_MONTH,1);
        int weekday=d.get(Calendar.DAY_OF_WEEK);
        int firstWeekDay=d.getFirstDayOfWeek();

        int indent=0;

        while(weekday!=firstWeekDay){
            indent++;
            d.add(Calendar.DAY_OF_MONTH, -1);
            weekday=d.get(Calendar.DAY_OF_WEEK);
        }

        String[] weekDayNames=new DateFormatSymbols().getShortWeekdays();

        do{
            System.out.printf("%4s",weekDayNames[weekday]);
            d.add(Calendar.DAY_OF_MONTH,1);
            weekday=d.get(Calendar.DAY_OF_WEEK);
        }while(weekday!=firstWeekDay);
        System.out.println();

        for(int i=1;i<=indent;i++)
            System.out.printf("%7s"," ");

        d.set(Calendar.DAY_OF_MONTH,1);
        do{
            int day= d.get(Calendar.DAY_OF_MONTH);
            System.out.printf("%6d", day);
            if(day==today)
                System.out.print("*");
            else
                System.out.print(" ");

            d.add(Calendar.DAY_OF_MONTH,1);
            weekday=d.get(Calendar.DAY_OF_WEEK);
            if(weekday==firstWeekDay)
                System.out.println();

        }while(d.get(Calendar.MONTH)==month);

        if(weekday==firstWeekDay)
            System.out.println();
    }
}
